home *** CD-ROM | disk | FTP | other *** search
/ SPACE 2 / SPACE - Library 2 - Volume 1.iso / program / 18 / forth / version1.1 < prev    next >
Encoding:
Text File  |  1986-09-18  |  10.7 KB  |  296 lines

  1.  
  2.             Forthmacs Version 1.1
  3.  
  4.     This is Forthmacs Version 1.1.  Version 1.1 fixes a number of
  5.     (mostly-minor) bugs that were in Version 1.0 and adds some new
  6.     features.
  7.  
  8. New Features
  9.  
  10.     Extended Error Messages
  11.     The new command WHY is used after a system error message; it
  12.     prints more information about the error.  For instance:
  13.  
  14.         ERA ASDFJL        \ Try to remove non-existent file
  15.           Can't remove file    \ Forthmacs prints this
  16.         WHY            \ Ask for more information
  17.           File not found    \ Forthmacs tells why
  18.         
  19.     Some of the extended error messages aren't too useful; others
  20.     are.  The messages are based on the error code that is returned
  21.     by a failing TOS system call.
  22.  
  23.     Autoloaded startup file
  24.     If there is a file called AUTO.FTH on the disk when Forthmacs
  25.     is started, Forthmacs will load that file.  The sample version
  26.     of AUTO.FTH on the working disk displays the message:
  27.  
  28.         Type the word   help   in lower case for more information
  29.  
  30.     Loading from EMACS buffers
  31.     If you have been editing a file with EMACS, you can now load
  32.     that file fast without accessing the disk.  The new command
  33.  
  34.         ELOAD  filename
  35.  
  36.     will first look to see if EMACS has a copy of that file in its
  37.     memory.  If so, the file will be loaded from there without
  38.     accessing the disk.  If EMACS does not have a copy of the file
  39.     in memory, the file will be loaded from disk as with FLOAD.
  40.  
  41.     You can also load just part of a file from an EMACS buffer.
  42.     The new command
  43.  
  44.         +LOAD
  45.  
  46.     loads the file contained in the current EMACS window, starting
  47.     at the cursor position and continuing to the end of the file.
  48.  
  49.     This is very useful when debugging a program.  For instance, after
  50.     you have fixed a bug in a program, put the EMACS cursor at the
  51.     spot where you want the loading to commence, get out of EMACS,
  52.     use   FORGET name  to undo part of the previous load, and use
  53.     +LOAD to reload the rest of the file.
  54.  
  55.     "ELOAD , EOPEN , and +EOPEN are new words which are used to
  56.     implement ELOAD and +LOAD ; they may be useful in other contexts
  57.     as well.  Use the WHATIS command, or read the addendum to the
  58.     reference manual, for more information.
  59.  
  60.     .DRIVE
  61.     The new command
  62.         .DRIVE
  63.     displays the name of the current drive.
  64.  
  65.     Screen resolution.
  66.     You can set the screen resolution from Forth with
  67.         LOW-RES or MEDIUM-RES
  68.     There is no HIGH-RES because it would be useless; if you have
  69.     a monochrome monitor, you get high resolution no matter what,
  70.     and if you have a color monitor you can only get low or medium
  71.     resolution.
  72.  
  73.     If you have a color monitor, Forthmacs now automatically sets the
  74.     screen resolution to medium when it starts, to ensure that 80
  75.     columns are available.
  76.  
  77.     The screen resolution may be determined with:
  78.         GETREZ  ( -- resolution )
  79.     resolution is 0 for low res, 1 for medium, and 2 for high
  80.     (monochrome).  I would have preferred to spell this GETRES ,
  81.     but Atari spelled it with a z, so I went along with them.
  82.  
  83.     Different size file buffers
  84.     The size of the buffers used by the Forthmacs file system interface
  85.     may be increased for faster disk access.  The new command:
  86.         FSETBUFFER  ( addr len fd -- )
  87.     causes that file to use the user-supplied buffer.  8192 bytes seems
  88.     to be a good size.  The file transfer program in XMODEM.FTH now uses
  89.     this feature.
  90.  
  91.     Mouse position
  92.     The LineA graphics interface in LINEA.FTH now contains some
  93.     words for finding the position of the mouse.  See LINEA.FTH
  94.     for more information.
  95.  
  96.     Editing with the mouse
  97.     The file MOUSEKEY.FTH, when loaded, causes the mouse to simulate
  98.     the effect of the arrow keys, so mouse movements may be used to
  99.     position the editing cursor, both in Forth and in EMACS.  Try
  100.     this out; I find it amusing, but I don't particularly like it.
  101.  
  102.     Aborting printouts
  103.     The PRINT-FILE command (contained in PRINTER.FTH) now allows
  104.     you to stop the printout by typing any character at the keyboard.
  105.  
  106.     Near Letter Quality printing
  107.     If you printer supports a Near Letter Quality mode using the
  108.     standard IBM control sequence, you can turn that mode on
  109.     and off with NLQ-ON and NLQ-OFF .  The words are in the file
  110.     PRINTER.FTH
  111.  
  112.     LIST command
  113.     The Forth 83 standard word LIST , for displaying the contents
  114.     of a Forth block, is now included in the block package which
  115.     is loaded with BLOCK.FTH .  I hope you aren't using blocks.
  116.  
  117.     SETEXC bios call
  118.     The SETEXC bios call, for setting and retrieving the contents
  119.     of an exception vector, is now provided in the normal system.
  120.         SETEXC    ( addr vec# -- oldaddr )
  121.     Previously it was possible to perform this function with simple
  122.     fetches and stores, but fetches and stores to exception vectors
  123.     do not work in USER-STATE .
  124.  
  125.    BIOS.FTH defines BIOS and XBIOS interfaces.
  126.     The new file BIOS.FTH provides predefined interfaces to all the
  127.     Atari BIOS and XBIOS system functions.  Previously these could
  128.     be easily constructed with the System Call Compiler.  Now they
  129.     have already been done for you, and all you have to do is either
  130.     load this file, or copy just the calls you need from this file
  131.     into your program.
  132.  
  133.    DATE command
  134.     The DATE command, in the file FILEDATE.FTH , displays the date
  135.     associated with all the files matching a pattern.  For example:
  136.  
  137.         DATE *.FTH
  138.  
  139.     shows the date on all the .FTH files in the current directory.
  140.  
  141.     FREE-MEM
  142.     The companion function for ALLOC-MEM was missing from version
  143.     1.0.  It has been added to the system.
  144.         FREE-MEM   ( addr #bytes -- )
  145.  
  146. Bugs Fixed:
  147.  
  148.     ^C
  149.     Typing ^C no longer causes Forth or EMACS to crash and exit.
  150.     To implement this fix, Forthmacs has to take over the operating
  151.     system "Terminate" vector and restore it before exiting.
  152.  
  153.     Random Bus Errors
  154.     (QUIT did not clear the return stack, causing "random" bus errors
  155.     after several aborts.  The return stack was overflowing into the
  156.     Text Input Buffer.
  157.  
  158.     XMODEM.FTH
  159.     The program did not synchronize with the other computer as fast
  160.     as it should have, because of a bug.  Another bug caused the
  161.     program to sometimes screw up received files containg embedded
  162.     ^Z characters.  Also, when overwriting an existing file, RECEIVE
  163.     would sometimes leave junk from the old file at the end of the
  164.     new one.
  165.  
  166.     ART.FTH
  167.     The random number generator in the Atari operating system is not
  168.     random in the least-significant-bit.  This caused the STRINGART
  169.     program to miss some of the possible pictures that it can now
  170.     generate.  The random number stuff has been moved out to the file
  171.     RANDOM.FTH .  The stringart program has been recoded slightly
  172.     to eliminate some redundancy.
  173.  
  174.     DEBUG.FTH
  175.     This program would not load because of a search order problem.
  176.     The search order is now set properly in the file.
  177.  
  178.     TUTORIAL.TXT
  179.     There were a number of errors in the EMACS tutorial.  Thanks to
  180.     Greg Hill for pointing these out.
  181.  
  182.     EMACS
  183.     1) EMACS didn't always erase the message line after the next
  184.        command was typed.
  185.     2) EMACS didn't remove the * on the mode line after a ^Z
  186.         3) Numeric repeat counts to ^O left the cursor in the wrong place
  187.     4) EMACS now complains if you type an invalid TOS file name.
  188.        It used to silently truncate the name to an acceptable length.
  189.  
  190.     TASKING.FTH
  191.     The stack comment for TASK: was wrong.  There were a number of
  192.     uses of the word ! in TASKING.FTH which should have been TOKEN! .
  193.     These caused the multitasker to crash when it was compiled and
  194.     then saved in an executable file with SAVE-REL .
  195.  
  196.     CRASH-RSTRACE
  197.     CRASH-RSTRACE did not display the most-recently-executed word.
  198.  
  199.     .CALLS
  200.     .CALLS used to hang the system if the word being considered
  201.     was stored in a DEFER word in the User Area.  .CALLS now ignores
  202.     the User Area.
  203.  
  204.     SET-RELOCATION-BIT
  205.     Forthmacs would sometimes crash when the dictionary grew beyond
  206.     128K, because of relocation map overflow.  SET-RELOCATION-BIT
  207.     now checks for overflow.  To save images larger than 128K, you
  208.     first have to increase the size of the relocation map with:
  209.          <new-size> IS MAX-IMAGE
  210.          "" FORTH.TOS SPLICE-RELOCATION   "" BIGFORTH.TOS SAVE-REL
  211.     Then use BIGFORTH.TOS
  212.  
  213.     ;
  214.     ; now checks to make sure the system is in compile state.
  215.  
  216.     ALLOC-MEM
  217.     ALLOC-MEM now aligns to a word boundary; previously, calling
  218.     ALLOC-MEM with an odd byte count would leave the allocation
  219.     pointer misaligned, so the next allocation could cause an
  220.     Address Error.
  221.  
  222.     STACK:
  223.     STACK: needed TOKEN, instead of , so user stacks couldn't be
  224.     saved to an executable file.
  225.  
  226.     SEE
  227.         SEE left an address on the stack when decompiling DOES> words
  228.  
  229.     'WORD to PAD
  230.     'WORD was too close to PAD , sometimes causing lines of text
  231.     accepted with WORD to overflow into the area used by number
  232.     conversion.
  233.  
  234.     (QUIT
  235.     A guard band was added between 'TIB and SP0 , reducing the
  236.     chance of stack underflows causing problems.
  237.  
  238.     (CR  (LF  BEEP  BACKSPACES
  239.     These words used the word EMIT when they should have used
  240.     (EMIT .  This sometimes caused incorrect updating of #OUT .
  241.  
  242.     COMPARE.FTH
  243.     The file comparison program had the "File1" and "File2" labels
  244.     backwards.  File1 is now the first argument, and File2 is now
  245.     the second.
  246.  
  247.     DIR
  248.     The format of the listing produced by DIR (or LS or FILES)
  249.     sometimes changed after certain other operations.  Now it
  250.     is always the same.
  251.  
  252.     Assembler
  253.     The assembler did not complain when the immediate operand to
  254.     a shift instruction was outside the allowable range of 1-8.
  255.     Now it does.
  256.  
  257.     Disassembler
  258.     The disassembler incorrectly disassembled the ILLEGAL and
  259.     TAS instructions.  It also incorrectly dissassembled:
  260.         8 SP ADDQ   and  8 # D0 LSL
  261.        as   0 SP ADDQ   and  0   D0 LSL
  262.  
  263.     WHERE
  264.     WHERE , which identifies the location of a compile error,
  265.     did not separate its message from the previous message
  266.     with a space.  Now it does.
  267.  
  268. Changes:
  269.  
  270.     Delete key
  271.     The Delete key was changed to delete the next character, not
  272.     the previous one, for compatibility with the GEM dialog box
  273.     behavior.  Also ESC-Delete now erases the next word, not the
  274.     previous.
  275.  
  276.     FLUSH FILE! FILE@
  277.     The words FLUSH FILE! and FILE@ were renamed to FFLUSH FILEC!
  278.     and FILEC@ to conform to the file system standard proposed in
  279.     the 1984 Rochester Conference Proceedings.
  280.  
  281.     >DMY DMY> >HMS HMS>
  282.     These words have been moved from the FORTH vocabulary to the
  283.     SYSTEM vocabulary.
  284.  
  285.     SYS-KEY SYS-KEY? SYS-EMIT
  286.     These words now use the direct BIOS calls instead of the BDOS
  287.     calls.  This is reputed to avoid some subtle bugs in the BDOS
  288.     which I have never encountered.  It is also a bit faster.
  289.  
  290.     LINEA.FTH
  291.     The fill patterns that used to be defined in LINEA.FTH have
  292.     now been moved to a separate file PATTERNS.FTH .  The fill
  293.     patterns took a long time to compile, and are not used very
  294.     much.  By separating these files, programs which use the Line-A
  295.     graphics will compile faster.
  296.